home *** CD-ROM | disk | FTP | other *** search
- **********************
- *** ***
- *** ***
- *** Direct3D Notes ***
- *** ***
- *** ***
- **********************
-
- Last updated September 5, 1996
-
-
- Notes on the software emulation drivers
- =======================================
-
-
- RAMP driver support
- ===================
- Optional Z buffering.
- Color key and stippled transparency.
- Mono interpolated rasterization only.
- Point sampled perspective correct textures.
- Flat and Gouraud shade modes.
-
- Performance notes for the RAMP driver
- =====================================
- Texture mapping performance is heavily gated by the speed of memory.
- There are a number of ways of maximizing the cache performance of your
- textures. The smaller the textures are, the better chance they have of being
- maintained in the secondary cache. This is crucial for keeping performance
- high. Also, changing the texture per primitive will thrash the cache. Try
- and keep polygons grouped in order of the textures they use.
-
- When using Z buffering and texturing, rendering your scene from front to
- back will increase performance. The textured Z buffered primitives
- pre-test the Z buffer on a scanline basis. If a scanline is hidden by a
- previously rendered polygon it is trivially rejected. If this is the case, Z
- buffering performance can exceed non-Z performance.
-
- The retained mode API automatically orders its scenes from front to back
- to facilitate this optimization.
-
- In it often a good idea to use the D3DTest program to verify performance
- results with different drivers, especially where hardware is involved.
-
-
- RGB driver
- ==========
-
- There is now an MMX optimized version of the RGB driver.
- If you have an MMX capable PC the RGB software emulation will automatically
- be accelerated. There is an application included in the sdk\bin directory,
- mmxtog.exe which allows you to switch MMX acceleration off and on for the
- RGB driver.
-
- Release notes for D3D MMX driver
-
- Functionality
- -------------
-
- 1. D3D's external interfaces unchanged, all examples and all apps that
- can use the RGB driver should be able to run with the RGB MMX driver.
-
- 2. Only 16-bit color depths have been optimised. There is a relatively
- minor (2X) improvement in 8-bit dithered RGB rendering.
-
- 3. The following are yet-to-be-implemented: mip-mapping, 16-bit dithering.
-
- 4. The Z-buffer is 16-bit, but is signed, so the farthest Z-value is 0x7fff,
- and the nearest is 0x8000. This should not affect you unless you examine
- the Z-buffer directly.
-
- 5. There are still some accuracy problems with the rendering: these are
- most clearly shown by the colored flashes that appear in the "twist"
- example. We're working on this problem right now, and should have
- fixes soon.
-
- 6. The driver only supports the PAL8 texture format. D3D apps should detect
- this and create the texture appropriately. This format is the same as
- the one supported by the ramp driver.
-
- Performance
- -----------
-
- 1. Performance is much better when all surfaces are in systemmemory, this
- includes the rendering target and all textures.
-
- 2. The current MMX RGB driver is not complete, and there are several
- major performance improvements that we plan to make. Expect another
- improvement of about 10% in all benchmarks for the MMX RGB driver,
- though the more sophisticated the rendering operation, the bigger the
- improvement. The biggest improvement should be in Z-buffered
- gouraud-shaded perspective-correct texture-mapping. Perspective
- correction will be much faster in the next beta.
-
- 3. Performance is better than that of ramp mode in most situations.
- There are some performance bottlenecks that we have yet to address.
- We suggest you run the "tunnel" example with the MMX driver to get a
- feel for the changed relative costs of rendering qualities: for
- example, the speed of gouraud shading is now much closer to that of
- flat-shading. To get the best performance from the tunnel, do the
- following:
-
- Specular highlights OFF
- Fog OFF
- Perspective Correction OFF
- Gouraud shading ON
-
- With these settings, you should be getting about 29Hz for the tunnel
- running in systemmemory fullscreen at 640x400x16.
-
- 4. The existing ramp driver works best on textures that are 256x256.
- This restriction has been removed in the MMX driver: it supports all
- texture dimensions equally well. It is still important to keep the total
- texture size as small as possible to reduce memory bandwidth. Note how
- fast the tiny checker texture runs in the tunnel. The checker texture is
- only 64 bytes instead of 64k like most of the other textures in the SDK.
- 256x2048 is a reasonable size for the texture in a game.
-
-
-
-
-
-
- Known Issues
- ============
- When using RGB software rasterisation, D3DRMMATERIALMODE_FROMFRAME
- does not work correctly if the object is unlit.
-
- It is not currently possible to load textures from resources if the code
- resides in a dll.
-
- Background depth images do not double buffer correctly in the retained
- mode api (page flipping scenario). Use IDirect3DRMViewport::ForceUpdate()
- to force the dirty region to be updated.
-
- The following issues is not made clear in the documentation:
- 1) SetOrientation overrides any previous shear or scale applied to a
- frame.
-
- 2) Texture Transparency. If the retained mode API has to sample down
- the colors used in a texture in order to, for example, palettize it,
- the color you're using as the transparent color may get remapped to
- another close color and transparency will no longer work. In order to
- stop this happening, pick a color to use for transparency that is not
- close to any other color in the texture.
-
- The Matrox Millenium driver does not render correctly fullscreen
- unless Clear is called at least once. Since the Millenium does not
- support texture mapping, this will not affect the types of application
- which do not use Clear. A workaround for this issue is to call Clear
- in your application once before entering the rendering loop.
-
- When using the Retained Mode method IDirect3DRM::LoadTexture, the texture
- is inverted when loaded from a BMP file. The simplest work around is to
- reverse the meshs texture coordinates or load from a PPM file.
-
-